#include<bits/stdc++.h> 
using namespace std;
//	给定N个高速公路出口形成一个环，需要给出任意两个站之间的最短的距离
//1.每个输入都有一个测试用例，对于每个测试用例，第一行是一个正整数N∈[3,100000]。然后跟着
//	N个整数距离D1，D2...DN，其中Di是第i个站和第i+1个站的距离，并且DN是第N站和第1站的距离
//2.第二行给定一个正整数M≤10000，然后跟着M行，每一行包括一对数据，表示要求的两个站号。
//3.站号由1~N，保证整个环的距离不大于10^7
//4.对于每个测试用例，输出M行，每行都是一个距离。
//5.环 
int main(){	//一般的循环嵌套测试点3会超时 
	int N,M;
	cin>>N;
	int dist[N+1];	//每个元素存的不是两个站之间的距离，而是第1站到这一站的距离 
	dist[0] = 0;
	for(int i = 1;i<=N;i++){
		cin>>dist[i];
		dist[i] += dist[i-1];
	}
	cin>>M;
	for(int i = 0;i<M;i++){
		int a, b;
		cin>>a>>b;
		int max_ = max(a, b);	//比较a和b里的大的那个，方便后面减距离差用的 
		int min_ = min(a, b);
		//两种距离算法，大号-小号，以及最后元素-大号+小号，然后比较输出一下更小的那个 
		cout<<min(dist[max_-1]-dist[min_-1],dist[N]-dist[max_-1]+dist[min_-1])<<endl;
	} 
	return 0;
} 